(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
f(x, f(s(s(y)), f(z, w))) → f(s(x), f(y, f(s(z), w)))
L(f(s(s(y)), f(z, w))) → L(f(s(0), f(y, f(s(z), w))))
f(x, f(s(s(y)), nil)) → f(s(x), f(y, f(s(0), nil)))
Rewrite Strategy: INNERMOST
(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)
Converted CpxTRS to CDT
(2) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(z0, f(s(s(z1)), nil)) → c1(F(s(z0), f(z1, f(s(0), nil))), F(z1, f(s(0), nil)), F(s(0), nil))
L'(f(s(s(z0)), f(z1, z2))) → c2(L'(f(s(0), f(z0, f(s(z1), z2)))), F(s(0), f(z0, f(s(z1), z2))), F(z0, f(s(z1), z2)), F(s(z1), z2))
S tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(z0, f(s(s(z1)), nil)) → c1(F(s(z0), f(z1, f(s(0), nil))), F(z1, f(s(0), nil)), F(s(0), nil))
L'(f(s(s(z0)), f(z1, z2))) → c2(L'(f(s(0), f(z0, f(s(z1), z2)))), F(s(0), f(z0, f(s(z1), z2))), F(z0, f(s(z1), z2)), F(s(z1), z2))
K tuples:none
Defined Rule Symbols:
f, L
Defined Pair Symbols:
F, L'
Compound Symbols:
c, c1, c2
(3) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
F(
z0,
f(
s(
s(
z1)),
nil)) →
c1(
F(
s(
z0),
f(
z1,
f(
s(
0),
nil))),
F(
z1,
f(
s(
0),
nil)),
F(
s(
0),
nil)) by
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
(4) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(z0)), f(z1, z2))) → c2(L'(f(s(0), f(z0, f(s(z1), z2)))), F(s(0), f(z0, f(s(z1), z2))), F(z0, f(s(z1), z2)), F(s(z1), z2))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
S tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(z0)), f(z1, z2))) → c2(L'(f(s(0), f(z0, f(s(z1), z2)))), F(s(0), f(z0, f(s(z1), z2))), F(z0, f(s(z1), z2)), F(s(z1), z2))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
K tuples:none
Defined Rule Symbols:
f, L
Defined Pair Symbols:
F, L'
Compound Symbols:
c, c2, c1
(5) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
L'(
f(
s(
s(
z0)),
f(
z1,
z2))) →
c2(
L'(
f(
s(
0),
f(
z0,
f(
s(
z1),
z2)))),
F(
s(
0),
f(
z0,
f(
s(
z1),
z2))),
F(
z0,
f(
s(
z1),
z2)),
F(
s(
z1),
z2)) by
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3)))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
(6) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3)))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
S tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3)))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
K tuples:none
Defined Rule Symbols:
f, L
Defined Pair Symbols:
F, L'
Compound Symbols:
c, c1, c2, c2
(7) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
We considered the (Usable) Rules:
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
And the Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3)))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = [3]
POL(F(x1, x2)) = 0
POL(L'(x1)) = [1]
POL(c(x1, x2, x3)) = x1 + x2 + x3
POL(c1(x1)) = x1
POL(c2(x1)) = x1
POL(c2(x1, x2, x3, x4)) = x1 + x2 + x3 + x4
POL(f(x1, x2)) = [2]
POL(nil) = [4]
POL(s(x1)) = 0
(8) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3)))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
S tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), f(z2, z3)))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(z2), z3))))), F(s(0), f(z0, f(s(s(z1)), f(z2, z3)))), F(z0, f(s(s(z1)), f(z2, z3))), F(s(s(z1)), f(z2, z3)))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
K tuples:
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
Defined Rule Symbols:
f, L
Defined Pair Symbols:
F, L'
Compound Symbols:
c, c1, c2, c2
(9) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
L'(
f(
s(
s(
z0)),
f(
s(
z1),
f(
z2,
z3)))) →
c2(
L'(
f(
s(
0),
f(
s(
z0),
f(
z1,
f(
s(
z2),
z3))))),
F(
s(
0),
f(
z0,
f(
s(
s(
z1)),
f(
z2,
z3)))),
F(
z0,
f(
s(
s(
z1)),
f(
z2,
z3))),
F(
s(
s(
z1)),
f(
z2,
z3))) by
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
(10) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
S tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
K tuples:
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
Defined Rule Symbols:
f, L
Defined Pair Symbols:
F, L'
Compound Symbols:
c, c1, c2, c2, c2
(11) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
We considered the (Usable) Rules:
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
And the Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = [3]
POL(F(x1, x2)) = 0
POL(L'(x1)) = [1]
POL(c(x1, x2, x3)) = x1 + x2 + x3
POL(c1(x1)) = x1
POL(c2(x1)) = x1
POL(c2(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2, x3, x4)) = x1 + x2 + x3 + x4
POL(f(x1, x2)) = [3]
POL(nil) = [3]
POL(s(x1)) = 0
(12) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
S tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(z0)), f(s(z1), nil))) → c2(L'(f(s(0), f(s(z0), f(z1, f(s(0), nil))))), F(s(0), f(z0, f(s(s(z1)), nil))), F(z0, f(s(s(z1)), nil)), F(s(s(z1)), nil))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
K tuples:
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
Defined Rule Symbols:
f, L
Defined Pair Symbols:
F, L'
Compound Symbols:
c, c1, c2, c2, c2
(13) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
L'(
f(
s(
s(
z0)),
f(
s(
z1),
nil))) →
c2(
L'(
f(
s(
0),
f(
s(
z0),
f(
z1,
f(
s(
0),
nil))))),
F(
s(
0),
f(
z0,
f(
s(
s(
z1)),
nil))),
F(
z0,
f(
s(
s(
z1)),
nil)),
F(
s(
s(
z1)),
nil)) by
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
(14) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
S tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
K tuples:
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
Defined Rule Symbols:
f, L
Defined Pair Symbols:
F, L'
Compound Symbols:
c, c1, c2, c2, c2, c2
(15) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
We considered the (Usable) Rules:
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
And the Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = [3]
POL(F(x1, x2)) = 0
POL(L'(x1)) = [1]
POL(c(x1, x2, x3)) = x1 + x2 + x3
POL(c1(x1)) = x1
POL(c2(x1)) = x1
POL(c2(x1, x2)) = x1 + x2
POL(c2(x1, x2, x3)) = x1 + x2 + x3
POL(c2(x1, x2, x3, x4)) = x1 + x2 + x3 + x4
POL(f(x1, x2)) = [3] + x1
POL(nil) = [2]
POL(s(x1)) = 0
(16) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
S tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
F(x0, f(s(s(x1)), nil)) → c1(F(s(x0), f(x1, f(s(0), nil))))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
K tuples:
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
Defined Rule Symbols:
f, L
Defined Pair Symbols:
F, L'
Compound Symbols:
c, c1, c2, c2, c2, c2
(17) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
F(
x0,
f(
s(
s(
x1)),
nil)) →
c1(
F(
s(
x0),
f(
x1,
f(
s(
0),
nil)))) by
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
(18) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
S tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
K tuples:
L'(f(s(s(x0)), f(x1, x2))) → c2(F(s(x1), x2))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
Defined Rule Symbols:
f, L
Defined Pair Symbols:
F, L'
Compound Symbols:
c, c2, c2, c2, c2, c1
(19) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
L'(
f(
s(
s(
x0)),
f(
x1,
x2))) →
c2(
F(
s(
x1),
x2)) by
L'(f(s(s(z0)), f(z1, f(s(s(y1)), f(y2, y3))))) → c2(F(s(z1), f(s(s(y1)), f(y2, y3))))
L'(f(s(s(z0)), f(z1, f(s(s(s(s(y1)))), nil)))) → c2(F(s(z1), f(s(s(s(s(y1)))), nil)))
(20) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
L'(f(s(s(z0)), f(z1, f(s(s(y1)), f(y2, y3))))) → c2(F(s(z1), f(s(s(y1)), f(y2, y3))))
L'(f(s(s(z0)), f(z1, f(s(s(s(s(y1)))), nil)))) → c2(F(s(z1), f(s(s(s(s(y1)))), nil)))
S tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
K tuples:
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
L'(f(s(s(z0)), f(z1, f(s(s(y1)), f(y2, y3))))) → c2(F(s(z1), f(s(s(y1)), f(y2, y3))))
L'(f(s(s(z0)), f(z1, f(s(s(s(s(y1)))), nil)))) → c2(F(s(z1), f(s(s(s(s(y1)))), nil)))
Defined Rule Symbols:
f, L
Defined Pair Symbols:
F, L'
Compound Symbols:
c, c2, c2, c2, c1, c2
(21) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 2 leading nodes:
L'(f(s(s(z0)), f(z1, f(s(s(s(s(y1)))), nil)))) → c2(F(s(z1), f(s(s(s(s(y1)))), nil)))
L'(f(s(s(z0)), f(z1, f(s(s(y1)), f(y2, y3))))) → c2(F(s(z1), f(s(s(y1)), f(y2, y3))))
(22) Obligation:
Complexity Dependency Tuples Problem
Rules:
f(z0, f(s(s(z1)), f(z2, z3))) → f(s(z0), f(z1, f(s(z2), z3)))
f(z0, f(s(s(z1)), nil)) → f(s(z0), f(z1, f(s(0), nil)))
L(f(s(s(z0)), f(z1, z2))) → L(f(s(0), f(z0, f(s(z1), z2))))
Tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
S tuples:
F(z0, f(s(s(z1)), f(z2, z3))) → c(F(s(z0), f(z1, f(s(z2), z3))), F(z1, f(s(z2), z3)), F(s(z2), z3))
L'(f(s(s(s(s(z1)))), f(x1, z3))) → c2(L'(f(s(s(0)), f(z1, f(s(s(x1)), z3)))), F(s(0), f(s(s(z1)), f(s(x1), z3))), F(s(s(z1)), f(s(x1), z3)), F(s(x1), z3))
L'(f(s(s(s(z1))), f(s(z2), f(x2, x3)))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(x2), x3))))), F(s(0), f(s(z1), f(s(s(z2)), f(x2, x3)))), F(s(z1), f(s(s(z2)), f(x2, x3))), F(s(s(z2)), f(x2, x3)))
L'(f(s(s(x0)), f(s(z0), f(s(z1), f(z2, z3))))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(z2), z3)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), f(z2, z3))))), F(x0, f(s(s(z0)), f(s(z1), f(z2, z3)))), F(s(s(z0)), f(s(z1), f(z2, z3))))
L'(f(s(s(x0)), f(s(z0), f(s(z1), nil)))) → c2(L'(f(s(0), f(s(x0), f(s(z0), f(z1, f(s(0), nil)))))), F(s(0), f(x0, f(s(s(z0)), f(s(z1), nil)))), F(x0, f(s(s(z0)), f(s(z1), nil))), F(s(s(z0)), f(s(z1), nil)))
L'(f(s(s(s(z1))), f(s(z2), nil))) → c2(L'(f(s(s(0)), f(z1, f(s(z2), f(s(0), nil))))), F(s(0), f(s(z1), f(s(s(z2)), nil))), F(s(z1), f(s(s(z2)), nil)), F(s(s(z2)), nil))
F(z0, f(s(s(s(s(y1)))), nil)) → c1(F(s(z0), f(s(s(y1)), f(s(0), nil))))
K tuples:
L'(f(s(s(x0)), f(s(x1), f(x2, x3)))) → c2(F(s(0), f(x0, f(s(s(x1)), f(x2, x3)))), F(x0, f(s(s(x1)), f(x2, x3))), F(s(s(x1)), f(x2, x3)))
L'(f(s(s(x0)), f(s(x1), nil))) → c2(F(s(0), f(x0, f(s(s(x1)), nil))), F(x0, f(s(s(x1)), nil)))
Defined Rule Symbols:
f, L
Defined Pair Symbols:
F, L'
Compound Symbols:
c, c2, c2, c2, c1
(23) CpxTrsMatchBoundsTAProof (EQUIVALENT transformation)
A linear upper bound on the runtime complexity of the TRS R could be shown with a Match-Bound[TAB_LEFTLINEAR,TAB_NONLEFTLINEAR] (for contructor-based start-terms) of 0.
The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by:
final states : [1, 2]
transitions:
s0(0) → 0
00() → 0
nil0() → 0
f0(0, 0) → 1
L0(0) → 2
(24) BOUNDS(O(1), O(n^1))